
import UIKit
class DYWMainController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
//        print(tabBar)
        
        let mainTabBar = DYWMainTabBar()
        
        setValue(mainTabBar, forKey: "tabBar")
        
        // 为 + 号 按钮添加监听事件
        // Selector : 
        // 第一种写法 :"didClickAddBtn"
//        mainTabBar.addBtn .addTarget(self, action: "didClickAddBtn", forControlEvents: .TouchUpInside)
        // 第二种写法
        let btnClick:Selector = "didClickAddBtn"
        
        mainTabBar.addBtn.addTarget(self, action: btnClick, forControlEvents: .TouchUpInside)
        
        // 多次调用这个方法设置属性
        seTControllerInTabBar(DYWHomeController(), title: "首页", ImageName: "tabbar_home")
        seTControllerInTabBar(DYWMessageController(),title: "消息", ImageName: "tabbar_message_center")
        seTControllerInTabBar(DYWDiscoveryController(),title: "发现", ImageName: "tabbar_discover")
        seTControllerInTabBar(DYWProfilesController(),title: "我", ImageName: "tabbar_profile")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    
    // 私有函数，只在内部调用
    /*
    thinking:
    定义一个函数，通过传入的参数设置对应的属性，可以多次调用
    */
    private func seTControllerInTabBar(vc:UIViewController, title:String,ImageName:String) {
        // 将传入的控制器嵌入到 UINavigationController 中
        let nav = DYWBaseNavController(rootViewController: vc)
        // navigationItem 的 titile
        vc.navigationItem.title = title
        // 设置 tabBar 的 title
        nav.tabBarItem.title = title
        // 设置图片
        nav.tabBarItem.image = UIImage(named: ImageName)
        // 设置选中状态下的图片
        nav.tabBarItem.selectedImage = UIImage(named: ImageName + "_highlighted")
        // 设置渲染的颜色
//        tabBar.tintColor = UIColor.orangeColor()
        // 添加到 UITabBarController 的子控制器中
        self.addChildViewController( nav )
    }
    // 设置点击 + 号按钮的事件
    // MARK 监听事件应该是一个私有的函数
    // 1、 不希望外部访问应该添加 private 关键字来限制访问
    // 2、 addTarget 添加的方法 private 关键字 运行循环无法找到这个关键字
    // 3、 在方法中添加 @objc 告诉运行循环 这个方法是基于OC 消息动态派发机制来执行
    @objc private func didClickAddBtn () {
        print(__FUNCTION__)
        let vc = DYWComposeController()
        let nav = DYWBaseNavController(rootViewController: vc)
        presentViewController(nav, animated: true, completion: nil)
    }

}
